package com.wyp168.leetcode;

import java.util.Arrays;

/**
 * @ClassName CountStudentsSolution
 * @Title TODO leetcdoe 1700 无法吃到早餐的学生的数量
 * @Description TODO 给定一个包含0和1的栈（代表三明治的种类：0代表圆形，1代表方型），和一个包含0和1的队列（0：代表喜欢只吃圆形三明治的学生，1代表只喜欢吃1方形三明治的学生）
 *              TODO 返回无法吃到早餐的学生的数量
 * @Author wyp168
 * @Date 2022/10/19 07:03
 */
public class CountStudentsSolution {

    public static void main(String[] args) {
        CountStudentsSolution solution = new CountStudentsSolution();

        int[] students = {1,1,0,0};
        int[] sandwiches = {0,1,0,1};
        System.out.println(solution.countStudents(students, sandwiches));
    }

    public int countStudents(int[] students, int[] sandwiches) {
        //统计喜欢吃0三明治和喜欢吃1三明治的学生的个数
        int s1 = Arrays.stream(students).sum();
        int s0 = sandwiches.length - s1;


        for (int i = 0; i < sandwiches.length; i++) {
            if (sandwiches[i] == 0) {   //如果栈顶元素为0，且还存在喜欢吃0三明治的学生，则学生数量s0累减
                s0 --;
            } else {    //如果栈顶元素为1， 且还存在喜欢吃1三明治的学生，则学生数量s1累减
                s1 --;
            }
            if (s0 < 0 || s1 < 0) { //如果任意一个学生数量为0，则退出循环
                break;
            }
        }
        return s0 < 0 || s1 < 0 ? s0 + s1 + 1 : s0 + s1;
    }
}
